Since the introduction of the personal computer (PC) architecture in 1981 and the ubiquitous PC-AT (advanced technology) architecture in 1984, PC-based computer systems have been continuously evolving. A concurrent evolution has likewise occurred with processors and operating systems. Although dramatic advancements have been made in each of these areas, the evolution process has been somewhat restricted due to legacy provisions. The legacy provisions result, in part, from the widespread popularity of PC's, which represent the vast majority of computers used worldwide. It is estimated that upwards of 100 million PC's are sold per year.
To better understand the reason for legacy provisions, consider that the PC-AT architecture is an open architecture, allowing literally 10's of thousands of peripheral components and software applications to be used on a PC-AT-based platform. Now consider the aspect of add-on peripherals. The PC-AT architecture introduced the industry standard architecture (ISA) bus and corresponding ISA expansion slots. Expansion slot architecture has evolved to include such variants as EISA (Enhanced ISA), microchannel (MC), ISA plug-n-play, and PCI (peripheral component interface), the current de-facto standard.
In order to maximize the potential market, peripheral components, such as add-on cards, have been designed to support the most basic common denominator—that is, the original PC-AT architecture. In particular, many of today's PC and PC-based server designs provide support for both ISA bus add-on cards and PCI add-on cards. ISA add-on cards are often referred to as “legacy” cards, due to their legacy requirements. Other architectures, such as PCI, provide mechanisms for supporting various legacy requirements. This continued support for legacy technology has generally restricted the level of enhancement that is provided in a new platform design. For example, it would be advantageous to start PC architecture anew, with a clean slate. However, this simply is not realistic.
One problem with legacy components and their carry-over designs is the original legacy architecture was designed in view of limited resources and thus, limited expandability. For example, at the time the PC-AT architecture was introduced, a “full” 640K (kilobytes) of memory was considered a large leap forward when compared with the 256K of memory common to the original PC architecture.
One provision that was added with the PC-AT architecture was the ability to provide optional firmware code on an “Option ROM (read-only memory).” Typically, an ISA or PCI add-on peripheral card may include an option ROM (also referred to as an expansion ROM for PCI) that contains object code or interpreter code that is used to initialize a peripheral device and possibly host a firmware-based interface between the peripheral card and an operating system. Basically, the option ROM architecture provides a convenient way to extend BIOS (basic input/output system) support to add-on peripherals without requiring a commensurate change to the system BIOS.
In accordance with legacy architecture considerations, PC option ROM code is mapped to a predetermined region of the physical memory address space. More specifically, the physical address space from 0xC0000p through 0xDFFFFp (p representing physical) is reserved for option ROM mapping. This includes two 64K memory regions known as the C-segment and D-segment, respectively. This provides for a 128K limit for all ISA and PCI option ROM code for a given system.
With the recent advancement in processor technologies, the computer system architecture landscape has dramatically changed. Modern processors, such as Intel's® IA-64 processor family, are designed to perform a large number of concurrent tasks. For example, an IA-64-based platform can provide the same service as a large number of individual servers that employ lesser processors. This can be particularly advantageous for supporting a large amount of I/O (input/output) channels, such as network channels and mass storage channels. As a result, various vendors have desired to deploy IA-64-based platforms that include multiple expansion slot racks or the like to provide support for 10's to 100's of add-on peripheral cards.
Firmware architecture advancements, such as the Enhanced Firmware Interface (EFI) standard, provide a means to ameliorate the 128-kbyte option ROM limit discussed above. However, most peripheral card manufacturer would prefer to design for a large target market, and many IT departments would like to implement existing ISA and PCI cards in their upgraded servers. As a result, the vast majority of existing peripheral cards do not support EFI. But what if the platform design is to support a moderate to large number of ISA legacy peripheral cards and/or PCI peripheral cards that include option ROMs? Under conventional practices, this is not possible, as the 128-kbyte option ROM limit would be quickly consumed, preventing mapping to the object or interpreted code for many, if not most, of the option ROMs.